home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side B).zip / Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side B).do / APPLE II COPY.bas < prev    next >
BASIC Source File  |  1996-12-24  |  5KB  |  158 lines

  1. 0  TEXT : HOME 
  2. 10  REM  **
  3. 20  REM  ** THIS ROUTINE POKES
  4. 30  REM  ** THE RWTS SUBROUTINE
  5. 40  REM  ** INTO MEMORY AT $300
  6. 50  REM 
  7. 60  REM  ** CALL 768 TO EXECUTE
  8. 70  REM  ** AFTER POKING THE
  9. 80  REM  **   FOLLOWING:
  10. 90  REM 
  11. 100  REM   LOC: $06 - TRACK #
  12. 110  REM   LOC: $07 - SECTOR #
  13. 120  REM   LOC: $08 - DRIVE #  
  14. 130  REM  LOC: $09 - SLOT # * 16
  15. 140  REM  LOC: $0A - LO ADR BYTE
  16. 150  REM  LOC: $0B - HI ADR BYTE
  17. 160  REM  LOC: $551 - RD/WRT FLG
  18. 170  REM 
  19. 180  REM 
  20. 190  VTAB 5: HTAB 8: PRINT " APPLE ][ COPY PROGRAM"
  21. 200  VTAB 8: HTAB 8: PRINT "BY...JOEL M. MCWILLIAMS"
  22. 210  VTAB 11: HTAB 11: PRINT "COPYRIGHT (C) 1982"
  23. 220  VTAB 23: HTAB 1: INPUT " ";YN$
  24. 230  RESTORE 
  25. 240  FOR LOC = 768 TO 829
  26. 250  READ CODE
  27. 260  POKE LOC,CODE
  28. 270  NEXT LOC
  29. 280  HOME 
  30. 290  VTAB 1: HTAB 1: CALL  -868: HTAB 12: PRINT "APPLE ][ COPY"
  31. 300  ONERR  GOTO 340
  32. 310  VTAB 4: HTAB 10: CALL  -868: PRINT "ORIGINAL SLOT:   ";: GET S1: PRINT S1
  33. 320  POKE 216,0: REM  ERRFLG OFF
  34. 330  GOTO 360
  35. 340  GOSUB 1380
  36. 350  GOTO 300
  37. 360  IF S1 <1 GOTO 300
  38. 370  IF S1 >7 GOTO 300
  39. 380  ONERR  GOTO 420
  40. 390  VTAB 6: HTAB 10: CALL  -868: PRINT "ORIGINAL DRIVE:  ";: GET D1: PRINT D1
  41. 400  POKE 216,0: REM  ERRFLG OFF
  42. 410  GOTO 440
  43. 420  GOSUB 1380
  44. 430  GOTO 380
  45. 440  IF D1 <1 GOTO 380
  46. 450  IF D1 >2 GOTO 380
  47. 460  ONERR  GOTO 500
  48. 470  VTAB 8: HTAB 10: CALL  -868: PRINT "DUPLICATE SLOT:  ";: GET S2: PRINT S2
  49. 480  POKE 216,0: REM  ERRFLG OFF
  50. 490  GOTO 520
  51. 500  GOSUB 1380
  52. 510  GOTO 460
  53. 520  IF S2 <1 GOTO 460
  54. 530  IF S2 >7 GOTO 460
  55. 540  ONERR  GOTO 580
  56. 550  VTAB 10: HTAB 10: CALL  -868: PRINT "DUPLICATE DRIVE: ";: GET D2: PRINT D2
  57. 560  POKE 216,0: REM  ERRFLG OFF
  58. 570  GOTO 600
  59. 580  GOSUB 1380
  60. 590  GOTO 540
  61. 600  IF D2 <1 GOTO 540
  62. 610  IF D2 >2 GOTO 540
  63. 620  VTAB 22: HTAB 2: PRINT  CHR$(91);"ESC"; CHR$(93);" TO RESTART - "; CHR$(91);"RETURN"; CHR$(93);" TO COPY ";: GET A$
  64. 630  IF  ASC(A$) = 27  THEN 280
  65. 640  HOME 
  66. 650  VTAB 22: HTAB 19: PRINT "PRESS "; CHR$(91);"ESC"; CHR$(93);" TO END"
  67. 660  FOR CT = 0 TO 28  STEP 7
  68. 670 ADDR = 24
  69. 680  POKE 227,1: REM  RD FLAG
  70. 690  IF S1 < >S2  THEN 740
  71. 700  IF D1 < >D2  THEN 740
  72. 710  VTAB 2: HTAB 1: CALL  -868
  73. 720  VTAB 2: HTAB 2: PRINT "INSERT 'ORIGINAL' DISKETTE ";: GET YN$
  74. 730  GOTO 760
  75. 740  IF CT >6  THEN 760
  76. 750  VTAB 2: HTAB 1: CALL  -868: PRINT "INSERT 'ORIGINAL' IN SLOT:  ";S1;: PRINT " DRIVE: ";D1: VTAB 4: HTAB 1: CALL  -868: PRINT "INSERT 'DUPLICATE' IN SLOT: ";S2;: PRINT " DRIVE: ";D2: VTAB 22: HTAB 38: GET YN$
  77. 760  IF  ASC(YN$) = 27  THEN  HOME : END 
  78. 770  FOR TRK = CT TO CT +6
  79. 780  POKE 6,TRK
  80. 790  POKE 8,D1: REM  DRIVE 1
  81. 800  POKE 9,S1 *16: REM  SLOT 1
  82. 810  FOR SECTR = 15 TO 0  STEP  -1
  83. 820  VTAB 22: HTAB 19: PRINT "PRESS "; CHR$(91);"ESC"; CHR$(93);" TO END"
  84. 830  IF  PEEK( -16384) = 155  THEN  HOME : END 
  85. 840  VTAB 10: HTAB 29: PRINT "  "
  86. 850  VTAB 10: HTAB 3: PRINT "READING TRACK: ";TRK;" SECTOR: ";SECTR
  87. 860  POKE 7,SECTR
  88. 870  POKE 11,ADDR: REM  HI
  89. 880  POKE 10,0: REM  ADR LO
  90. 890  LET ADDR = ADDR +1
  91. 900  CALL 768
  92. 910  GOSUB 1450
  93. 920  NEXT SECTR
  94. 930  NEXT TRK
  95. 940  IF S1 < >S2  THEN 990
  96. 950  IF D1 < >D2  THEN 990
  97. 960  VTAB 2: HTAB 1: CALL  -868
  98. 970  VTAB 2: HTAB 2: PRINT "INSERT 'DUPLICATE' DISKETTE ";: GET YN$
  99. 980  IF  ASC(YN$) = 27  THEN  HOME : END 
  100. 990  LET ADDR = 24
  101. 1000  IF CT < >0 GOTO 1060
  102. 1010  POKE 8,D2: REM  DRIVE 2
  103. 1015  POKE 9,S2 *16: REM  SLOT 2
  104. 1020  POKE 227,4: REM  INIT DISK
  105. 1030  VTAB 10: HTAB 1: CALL  -868: HTAB 9: INVERSE : PRINT "                     ": VTAB 11: HTAB 9: PRINT " FORMATTING DISKETTE ": VTAB 12: HTAB 9: PRINT "                     ": NORMAL 
  106. 1040  CALL 768
  107. 1050  VTAB 10: HTAB 1: CALL  -868: VTAB 11: CALL  -868: VTAB 12: CALL  -868
  108. 1060  POKE 227,2: REM  WRT FLAG
  109. 1070  FOR TRK = CT TO CT +6
  110. 1080  POKE 6,TRK
  111. 1090  POKE 8,D2: REM  DRIVE 2
  112. 1100  POKE 9,S2 *16: REM  SLOT 2
  113. 1110  FOR SECTR = 15 TO 0  STEP  -1
  114. 1120  VTAB 22: HTAB 19: PRINT "PRESS "; CHR$(91);"ESC"; CHR$(93);" TO END"
  115. 1130  IF  PEEK( -16384) = 155  THEN  HOME : END 
  116. 1140  VTAB 10: HTAB 29: PRINT "  "
  117. 1150  VTAB 10: HTAB 3: PRINT "WRITING TRACK: ";TRK;" SECTOR: ";SECTR
  118. 1160  POKE 7,SECTR
  119. 1170  POKE 11,ADDR: REM  HI
  120. 1180  POKE 10,0: REM  LO ADR
  121. 1190  LET ADDR = ADDR +1
  122. 1200  CALL 768
  123. 1210  GOSUB 1450
  124. 1220  NEXT SECTR
  125. 1230  NEXT TRK
  126. 1240  NEXT CT
  127. 1250  HOME : VTAB 5: PRINT "COPY ANOTHER DISKETTE? ";: GET YN$
  128. 1260  IF YN$ = "Y"  THEN  RUN 
  129. 1270  POKE 1012,69
  130. 1280  HOME 
  131. 1290  END 
  132. 1300  DATA  24,169,0,141,245,183,133,12
  133. 1310  DATA  141,235,183,165,9,141,233,183
  134. 1320  DATA  165,8,141,234,183,165,6,141,236,183
  135. 1330  DATA  165,7,141,237,183,165,227,141
  136. 1340  DATA  244,183,165,10,141,240,183,165,11
  137. 1350  DATA  141,241,183,169,183,160,232,32
  138. 1360  DATA    217,3,144,5,173,245,183,133,12,96,0
  139. 1370  REM  ** ERROR SUB
  140. 1380  REM 
  141. 1390  LET ERR =  PEEK(222)
  142. 1400  POKE 216,0: POKE 222,1
  143. 1410  IF ERR = 254  THEN  RETURN 
  144. 1420  IF ERR = 16  THEN  RETURN 
  145. 1430  HOME : PRINT "ERROR": END 
  146. 1440  RETURN 
  147. 1450  REM 
  148. 1460  REM  DOS ERROR
  149. 1470  IF  PEEK(227) = 1  THEN 1490
  150. 1480  IF  PEEK(47093) = 16  THEN  HOME : PRINT "DISKETTE WRITE PROTECTED<CTRL-G> ";: GET YN$: GOTO 230
  151. 1490  RETURN 
  152. 65529  REM 
  153. 65530  REM  $$$$$$$$$$$$$$$$$$$$$
  154. 65531  REM  $   APPLE ][ COPY   $
  155. 65532  REM  $ COPYRIGHT (C) 1982$
  156. 65533  REM  $     ... BY ...    $
  157. 65534  REM  $ JOEL M MCWILLIAMS $
  158. 65535  REM  $$$$$$$$$$$$$$$$$$$$$